package com.ys.day27.p3线程池;

import java.util.concurrent.Executors;

/**
 * 描述:
 *
 * @author CodeYang
 * @version 2021/1/6 20:36
 */
public class P2线程池的参数 {

    /**
     *
     * /**
     *    public ThreadPoolExecutor(int corePoolSize,
     *                               int maximumPoolSize,
     *                               long keepAliveTime,
     *                               TimeUnit unit,
     *                               BlockingQueue<Runnable> workQueue) {}
     * corePoolSize: 线程池的核心线程大小(核心线程数量)
     * maximumPoolSize：线程池的最大线程大小(数量)
     * keepAliveTime: 非核心线程(maximumPoolSize-corePoolSize)存活的有效时间，
     * unit:参数3的单位
     * workQueue：线程池的工作队列
     *
     * 工具方法只有一个参数：表示核心线程大小和最大线程大小是一致的
     * 如果核心线程大小和最大线程大小一致，那么参数2，参数3，参数4都是哑巴参数
     * 注意：new LinkedBlockingQueue<Runnable>()此时队列是无界限的队列。
     *
     *
     *Executors.newFixedThreadPool(5);||VV

     public static ExecutorService newFixedThreadPool(int nThreads) {
     *return new ThreadPoolExecutor(nThreads, nThreads,
                * 0L,TimeUnit.MILLISECONDS,
     *new LinkedBlockingQueue<Runnable>());
     *}
     * @param args
     */
    public static void main(String[] args) {

        /**
         * corePoolSize—在池中保留的线程数，即使它们是空闲的，除非设置了allowCoreThreadTimeOut
         * maximumPoolSize—池中允许的最大线程数
         * keepAliveTime—当线程数量大于核心时，这是空闲线程在终止前等待新任务的最大时间。
         * unit—keepAliveTime参数的时间单位
         * workQueue 工作队列——用于在任务执行之前保存任务的队列。这个队列将只保存execute方法提交的可运行任务
         */
        Executors.newFixedThreadPool(5);

    }
}
